{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 过拟合与欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "np.random.seed(666)\n",
    "x = np.random.uniform(-3.0, 3.0, 100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4953707811865009"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(X, y)\n",
    "lin_reg.score(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xabf75e3fc8>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD5CAYAAAA+0W6bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de3yU5Z338c+PEDQgEBQ8EFDwRFGootGqUKUooogkWrVa3NrqLu12u7W2WkHXqs9TH6innrbd1t222oeIINiIIqIW8ViRIJ4AqdQTBJSoBEUihOTaP64EQphJ5nDPzH3PfN+vly/NOMl9TTLznWt+18mcc4iISPR0yXUDREQkNQpwEZGIUoCLiESUAlxEJKIU4CIiEaUAFxGJqK6d3cHM/ghMADY654a13LYvMAsYBLwDXOSc29TZz+rbt68bNGhQGs0VESk8y5Yt+9A516/97dbZPHAzOxXYAvy5TYDfCnzsnJtuZlOAPs65aztrRHl5uaupqUnpAYiIFCozW+acK29/e6clFOfc08DH7W6uAO5p+e97gMq0WygiIklJtQZ+gHNuA0DLv/cPrkkiIpKIjA9imtlkM6sxs5q6urpMX05EpGCkGuAfmNlBAC3/3hjvjs65u5xz5c658n799qjBi4hIilIN8HnAZS3/fRnwYDDNERGRRHUa4GY2E/gbMMTM1pnZFcB0YKyZvQmMbflaRESyqNN54M65S+L8r9MDbouISF6pXl7LbQtXs76+gf6lJVwzbgiVI8oC+/mdBriIiHQsVlADTH3gNRoamwCorW9g6gOvAQQW4gpwEZE0VC+vjRnUexd32Xlbq4bGJm5buFoBLiISBrctXB0zqNvf1mp9fUNg19ZmViIiaUg2kPuXlgR2bQW4iEga4gVyaUkxJcVFu91WUly0sz4eBAW4iEgarhk3JGZQ3zTxaKadP5yy0hIMKCstYdr5wzULRUQkLFoDOd50wSADuz0FuIhImipHlGU0qONRCUVEJKIU4CIiEaUSiohIHJleCp8uBbiISAzxVlhCZgcmk6ESiohIDPFWWN62cHWOWrQnBbiISAzxVlgGuRQ+XQpwEZEY4q2wDHIpfLoU4CIiMcRbYRnkUvh0aRBTRCSGzlZYhoECXEQkjlytsEyUSigiIhGlHriI5K1MLsQJwyIfBbiI5KVMLsQJyyIflVBEJC9lciFOWBb5KMBFJC9lciFOWBb5KMBFJC9lciFOWBb5KMBFJC9laiFO9fJatm7fscftuVjko0FMEclLmViI037wslVpSTE3TTxas1BERIIS9EKcWIOXAD326qoj1UREwqw2JIOXrdQDF5GCkuoCnOrltRjgYvy/XO1QmFYP3MyuMrMVZva6mc00s72DapiISNBaa9i19Q04di3AqV5e2+n33rZwdczwNsjZDoUpB7iZlQHfB8qdc8OAIuDioBomIhKk6uW1/Gj2KykvwIlXJnHk7oi1dGvgXYESM+sKdAfWp98kEZFgtfa8m1ysPnRiNex4ZZKyHB7wkHKAO+dqgduB94ANwGbn3GNBNUxEJCjxZo+0SqSGHcYDHtIpofQBKoDBQH+gh5ldGuN+k82sxsxq6urqUm+piEiKOuphJxrClSPKmHb+cMpKSzB8z3va+cNzul94OrNQzgDeds7VAZjZA8ApwIy2d3LO3QXcBVBeXh7784uISAb1Ly2JOQWwyCypEA7bAQ/p1MDfA04ys+5mZsDpwKpgmiUisrvq5bWMnL6IwVPmM3L6ooRmjrSKV/6446JjQhXIyUq5B+6cW2Jmc4CXgB3Aclp62iIiQUp3/+1sn2+ZrcMezMUZlc2E8vJyV1NTk7XriUh+GDl9UcwSSFlpCc9NGZODFsUXa7+UkuKitOrlZrbMOVfe/nYtpReR0AvL/tuJyOZhDwpwEQm9sOy/nYhsvtkowEUk9HI9BzuZAdRsvtkowEUESG+WR6blcg52svunZPPNRrsRikhoTlnvSCpzsIOYDdJRTTvWz8rmjBcFuIgkHVJRENSbUio17Wwt+FEJRUQiNcsjUUHNBgnzAKoCXERCHVKpCupNKdcDqB1RgItIqEMqVUG9KYVxE6tWqoGLSNaXmmfDNeOGxFwRmcqbUtg2sWqlABcRILwhlap8fFNqTwEuInkr396U2lOAi0hkZWvXv7BSgItIJEVh8VGmaRaKiERSNnf9CysFuIhEUj4uPkqWAlxEIikfFx8lSwEuIpHU0eKjMO+sGCQNYopIJMWb5w0UzOCmAlxEIivWPO9jb34s73ZWjEclFBHJG9XLa6lvaIz5//JxcFM9cBHJGx1NIczJ4ObWrTBvHnTrBuefH/iPVw9cRPJGR73srO2suGMHPPYYfOMbcMABcMkl8PvfZ+RS6oGLSN7oX1pCbYwQ79O9OLP1b+egpgaqquC+++CDD6B3b7j4Ypg0CU49NSOXVYCLSN6It4XsjecenZkLrlkD997rg/vvf/elkgkT4NJLYfx42GuvzFy3hQJcRPJGVraQ/eADmD3bh/aSJWAGp50G11wDF1wApaXBXasTCnARySsZ2UJ2yxaorvah/fjj0NQEX/wi3HqrL5MMHBjs9RKkABcRiaWx0Yd1VZUP761b4eCDfU970iQYNizXLVSAi4js5Jwvi1RVwaxZUFcHffr4mvall8LIkdAlPJP30gpwMysF/gcYBjjgcufc34JomIgIZOnQhtWrfWjfey/84x9+8HHiRN/TPuusjA9GpirdHvgvgUedcxeYWTegewBtEhEBMnxow/vv+yl/VVV+CqAZjBkD11/vF9307p1u8zMu5QA3s17AqcA3AZxz24HtwTRLRKTjQxtSCvBPP4W//MWH9hNPQHMzjBgBt9/uByPLorVXSjo98EOBOuBPZnYMsAy40jn3WSAtE5GCF8ihDdu3w8KFPrTnzYOGBhg0CKZO9SWSoUODaWwOpBPgXYHjgH93zi0xs18CU4Ab2t7JzCYDkwEOPvjgNC4nIoUm3srKTvc1cQ6ef96H9uzZ8NFHsN9+8M1v+tA+5RRfMom4dIZT1wHrnHNLWr6egw/03Tjn7nLOlTvnyvv165fG5USk0HR0aENMK1f6Gvahh8KoUXD33TB2LDz0EKxfD7/9rZ9JkgfhDWn0wJ1z75vZWjMb4pxbDZwOrAyuaSJS6BJaWbl+Pcyc6Xvby5f7aX5nnAE33wznnQc9e+ao9ZmX7iyUfweqWmagvAV8K/0miYjsEnNl5ebN8MADPrQXLfIlk/Jy+PnP/WDkgQfmprFZllaAO+deBsoDaouISHzbt8OCBTBjhi+JbNsGhx0GN9zg69pHHpnrFmadVmKKSHg1N8Ozz/qe9v33w6ZN0K8f/Mu/+JWRJ56YN/XsVIQ+wLOyCktEwuX1131Pe+ZMeO896N7d17MnTfL17eLiXLcwFEId4BldhSUigUq7s7V27a7ByFdfhaIiOPNMmDYNKiqgR4/MNT6izDmXtYuVl5e7mpqahO8/cvqimHNAy0pLeG7KmCCbJiJpaN/ZatW9uAsNjc3xA72+HubM8aH91FN+MPKkk3xP+6KLYP/9s/gowsvMljnn9hhvDHUPPJBVWCKScbGWvANsbWwG2n16HrofPPKIL5HMn+8HJ4880k/7+/rX/cCkJCTUAZ7yKiwRyarOOlXmmjl2zasUTf4VvPm8nwZ4wAHw3e/63vbxxxf0YGSqQh3g8c63y9rp0iKSkJidLecYWvc2FSsWU7HyKQ7a8hFbupXAxRf60B4zBrqGOoJCL9S/vaycbyciabtm3BCumvUyDijbvJGKlYupWLmYIR++R2OXIp4afBz/7yuXs6J8NIt+Mj7Xzc0boQ5wyND5diISqMpDSrDNS+j/8FxOWOd31FhadhT/ceZ3mT9kJJu696akuIhp5w7v8Odo2nByQh/gIhJSDQ1+RWRVFSxYQEVjI58MPoLfn3k5MwafwqcHDcQM6rc2UtZBGLeGdm19A4Y/2gs0bTgRCnARSVxTEzz5pA/tuXP9AQn9+8P3vw+TJtHr2GP5thnfTvDHtZ9+2H5Sc1qHNxQABbiI7GaPMsaZR1LJRj/t7777YMMG6NULLrjAD0aOHu0X3aQg3vTDtjRtOD4FuIjs1LZHPLD+fSqeX8wXb18MH63zy9fPOceH9jnnQEn603kTCWdNG45PAS4iO931wIt8dcnjVK5cTHntKgCWDBzG/adeyLX/8x+w776BXi/eWo9WmjbcMQW4SKHbuhUefBDuvZcHH1lAcXMTb/Q9hJ+ddhkPHnUa63vtjwHXJhDeyc4iibXWo3Ugs6OBT/EU4CKFaMcO+Otf/WDkAw/AZ5/BgAHMGnUBMw4bxRv7D97t7omUMVLZfE5rPdKjABcpFM7B0qU+tGfNgg8+gN69eefMidzW9wQW9Dmc3j32YvPWxt2+rbiLJVTGiDUgmcgsEq31SJ0CXCTfrVnjQ7uqCt58k6bibjw95EvMOvkKXjr6ZDa5LjQ2+Ql8m9qFN+BrGgnQ5nPZpwAXSUHoVwxu3Oh72VVVsGSJ3yhq9GiWXzKZb28dxMailpLIDthz9vXuGptcQnOxtflc9nXJdQNEoqa11ltb34BjV623enltbhu2ZYsP7PHjdy2u+fxzuPVWf6rNokV8r+S4XeGdhNr6BkZOX8TgKfMZOX1RzMd6zbghlBTvPh9cs0gySz1wkSSlWuvNiMZGePxxH9zV1X5GySGHwI9/7PfWHjZst7unWs4w2Nm7jjc4qQHJ7FOAiyQp57Ve53xZpHUwsq4O+vSBf/onf9DvKadAl9gfrjubdx1L2/1JWsV7w9KAZHYpwEWSlLNa7+rVUFXFlj/9mX3WvcvnXbvx3NCT6XHdZZz03UnQrdvOu8ar0cead13cxdhn767Ub22kf2kJX/lCP558o27n98YL/Fi3h35sIM8owEWSlNWDRt5/3+8/UlUFNTU4M1475Bjmjj+PhUeezKd79aDkoyKmrajbGZSJzMdOJmQPm/oITTHOzi1qd4KODiHPPgW4SJIyXuv99FO/uKaqyi+2aW6G446DO+6g8sMBvNK8++ns7csZndXoky1zxArvWLeHamygQCjARVIQeK13+3ZYuNCH9rx5fq/tQYNg6lS/edTQoQC8OmV+zG9vW38PukZfFqeMUtauZJTzsYECpGmEIrniHDz3nD/Yt39/mDgRnngCvvUtf/tbb8FPf7ozvCF+nb3t7YncJxmJTg8M+rrSubwJ8OrltZ3OUxUJhZUr4frr4dBDYdQouPtuGDvWn26zYQP85jd+JkmMU9oTCdOg52NXjihj2vnDKSstwfA972nnD9/jE4jmgWdfXpRQNHgioVdbu2swcvlyP83vjDPg5pvhvPOgZ8/d7h5vNkci9fdM1OgTKRlpHnj2mYszQJHwDzArAmqAWufchI7uW15e7mpqatK6Xiwjpy+KW6N7bsqYwK8nkpDNm/1g5IwZ/hgy5+CEE3xN+2tfgwMPjPlt7Tsk4HuysXq9UhjMbJlzrrz97UH0wK8EVgG9AvhZKdHgiYTGtm2wYIHvaT/0kP/6sMPghht8cB95ZKc/QrM5JFFpBbiZDQDOAW4BfhhIi1KgTXQkp5qb4ZlnfGjPmQObNkG/fjB5sg/tE0+MWc+ORx0SSVS6PfBfAD8GenZ2x0zK6sIKkVavveZD+957Ye1a6NHD17MnTfL17a6pvbx6lxRT37Dntq69S4rTbbHkmZQD3MwmABudc8vMbHQH95sMTAY4+OCDU71chzR4Ilmzdq0P7KoqH+BFRTBuHEyfDhUVPsTTFK+znkQnXgpEOj3wkcBEMxsP7A30MrMZzrlL297JOXcXcBf4Qcw0rtehsG+ioz0iImzTJl8aqaqCp5/2g5EnnQS//jVcdBHsv3+gl6uPdahCB7dnmp674ZVygDvnpgJTAVp64Fe3D++gRP0JpGmOEfT55zB/vg/t+fP9Sskjj4SbbvIlksMOy9ilMz2mk8zrSc/dcAv9Qp7Qbp6fhI5mFUiINDf76X5XXOGn+F1wATz/PPzrv/qzJN94A37yk4yGN2R2QUyyryc9d8MtkIU8zrnFwOIgflZ7+TClSrMKQsw5eOUV39OeOdMvuNlnHzj/fN/THjMm5cHIVGVyTCfZ15Oeu+EW+pWYmX4CdfRxMqjSTTIfiaNeLoqMd9/dNRi5YoUP6bPPhjvugHPPhe7dc9q8TI3pdPR6ivXc0xTdcAt9gKf6BEokCDuq7wGB1f4SneaoemOGffQR3H+/D+1nn/W3jRoF//VfcOGFsN9+uW1fFsR7PfUuKY753Pvq8WXMXVarKbohFfoaeCr1wETrfB19nAyy9pfoZkBBXjPqm3sF1v6GBpg920/xO+ggX8/++GO45RZ4+22/AOc73ymI8Ib4ryczYj73nnyjLqHnruRG6HvgqdQD4wXhTfNW7PZ9qZRnUi3dJPKRON7Prq1vYPCU+QmXVKLek0+7/U1NfjCyqgrmzvUHJLSe0n7ppXDMMQU7qTre6+mqWS/HvH9rb117CoVT6AMckq8HxgvC+oZGqpfX7vxZnZVnMl37a1/mibcCD9jtkwR0HGRRH/hNqf3OwUsv+dC+7z6/LWuvXr40MmkSnHaaX3QjMV9Pty1cHffsyyi9+Rea0JdQ2kr0Y3VHIdu2HNFReSbTexvHKvN8tn0HxV067hkmUlKJ+syBpNrfeujBUUdBebnfS/tLX/K17vffhz/8wc8kUXh3KNbzvZWmDYZXJHrgkNzH6mvGDeEHcT4Stg2BRMozmZoREquX2djk6NO9mO7durK+Jdg7ewyxRH3mQKftr6vzde2qKvjb3/xtp54KV13le9x9+mSxtfmh9XmdyOtGwiMyAZ7Mx+rKEWXc/NAKNsVYetw+xDoqz2RyeX7cMs/WRpb/5Ewg/j7n8YK4tSRTW9+AwW5vAFGaORBr1k4fGvmFewcm3OnPjtyxA4YP93uQXHIJZGifnUJSOaIsbiklKm/+hSYyJZSOBvhilVNuPPfoUB/vlMj5gcmUcdqWZMCHd2sxJmozB1pn7RzcsxunvbWM3y38BUt/NYkTrvueX3Tzox/Bq6/6f669VuEdIB2LFi2R6YHH+1gNscspYd+hMJG54ck8hlifUBwRPJXIOVi6lMoZM6icNQs2boTSUrh0kh+M/PKX/XFkWVCIi6rC/rqR3aV9pFoy0jlSLdYxU+1FLayCDIjBU+bHrJkb8Pb0c9JqZ1a8+aavaVdVwZo1sNdeMGGCD+3x4/3XWaRjzSRMMnmkWla07RnE64lHbaAlyBp7JAcuP/gAZs3yof3ii35u9ujRMHWq34uktDRnTYv6VEwpDJGpgYMPvOemjKEsgfpxoYlM7XLLFn/I79lnQ1kZXHmlPzfyttvgvfdg0SK4/PKchjdEfyqmFIbI9MDb0hFqewp17bKxER5/3Pe0q6th61Y45BD48Y99ieToo3Pdwj1E8hONFJxIBniowyqHQnUqkXOwZInvbc+aBR9+CPvuC9/4hg/tU07J2mBkKtRJkCiIZIBD+mFViDMMsmL16l0H/f7jH7D33jBxog/ts86Cbt0S/lG5/BupkyBREJlZKEHSDIOAbdjg9x+pqoJly3zP+vTTfWifd57fkyRJ+huJ7BL5WShB0gyD2JLq8X7yCct+8Uea/v8Mjv/HcopcM5uGfpE+d94JF1/st25Ng/5GmaNPn/mjIANcMwz2lNBeM9u3w6OPQlUVTQ8+yPHbtvFe7wP4zUkX8uDRo1l/4CCmjR5OZZrhDfobZUrUtxqW3RVkgGuGwZ7i9XhvX7CKys/e9uWR2bP9YQj77Uf1iHFUHfZlXir7wq69tQPsIetvlBn6ZJNfwjsNIIMiM2c6i9r3bA//8D2ufvrP3PezluXr99wD48bBww/Dhg1cfdpkXhowdI+DEYLqIetvlBn6ZJNfCrIHrhkGe+pfWsKOtWuZuPJpKlcu5uiNb7HDurD0iOMZ8Js7oLLSn9be5v6Z7CHrb5Sazurb+mSTXwpyFoq0sXkzzJ1L3e/+yH5Ln6cLjpcPOpLqo0bzxPDRXP2NU2OGpmaJhE8ifxP93aJJs1Bkl23b4JFHfF374Ydh2zb6HX44q759FTftcwwvdt2v0x6vesjhk0h9W3+3/KIeeKFobvYnsFdV+ePG6uth//3ha1/zB/2ecELBHfSbb9PpIr8jpcSlHniheu21XSsj166FHj384ppJk+CMM6BrYT4F8nE6nerbhSdyr9586zVlxNq1MHOmD+5XX/UH+o4b548fq6jwIV7g8nE6nfZvKTyRCvB87DUFZtMmmDPHh/bTT/vNpE4+Gf7zP+Gii6Bfv1y3MFSCnk4Xho6F6tuFJ1IBno+9prR8/rkfhKyq8oOS27fDkCFw882+RHLoobluYU4kEqZBlhvC1LEI1Y6UknEpB7iZDQT+DBwINAN3Oed+GVTDYonSIoSM9ciamuCpp3xoz5kDn3wCBx4I//ZvPrSPOy5vByMT+Z0mGqZBlhvUsZBcSacHvgP4kXPuJTPrCSwzs8edcysDatseojJIE3iPzDl/GnvrYOT69dCzpz92bNIkGDPG17nzRKygBhL6nSYapkGWG6LUsZD8knKAO+c2ABta/vtTM1sFlAEZC/CoDNIE1iN75x0f2FVVsHKlnzFy9tlw551w7rnQvXuwDQ+BeG9+exd3Seh3mkyYBlVuiErHQvJPIHuhmNkgYASwJMb/m2xmNWZWU1dXl9Z1KkeUMe384ZSVlmD4U+jDuIIsXojU1jcwcvoiqpfXxv/mjz6C3/3O7z8yeDBcfz306QO//S28/z7Mm+fnbudheEP8N79NWxtj3r/97zpeaGYyTLVvi+RK2gt5zGwf4CngFufcAx3dt1AW8oycvihmj6zVHkuXt26Fhx7yPe1HH/VnSA4d6hfYfP3rMGhQdhqeZbFKJVfNejnmYpR4isxodi5uqQWys1Q8DLNQJH/FW8iTVoCbWTHwMLDQOXdnZ/cPIsBz9UJJ5rqx9ptob2CvbjxzAj605871p7WXlcEll/i69jHH5MVgZLzfW7w9Ofbq2oX6hj1726UlxWzb0dzh77Q1qCFcU+kU7pKuwAPczAy4B/jYOfeDRL4n3QDP1UY8qVy39UW7W0/cOYa/v4bKlYs5d9XT7P/ZJn/c2AUX+NA+7bS8G4yM93vb43fTok/3Yj5vbI75PbArmLuY0RTjuVtWWsJzU8Zk4NGkRptHSRAyEeCjgGeA1/DTCAGuc849Eu970g3weKWJTL9o07nuyOmLKHr7LSpWLqZy5VMc9vE6thV15YUhX+K0m38AEyb4g387EcVeXEe/t/X1DXH37fj5147t9LFGZd+PXD1nJb8EvheKc+5Z/Osla3I1XSul69bVwezZzJv5J/Z7dRkALwwcxn+fUMmTw05l6qRTIMEADtNCkWR09HvraOZGIrNDsj3zI9U3UE0xlEyK1ErMbL5o275g431c711SvPsNn30GDz7o69oLF0JTE/sNH87r37+OG0qG8zI96V9awtQke8/xZmbcNG9FqHvlHf290p0Sms0ppem8gWqKoWRSpAI8Wy/a9i/YWOEN8Nn2HTy49F0qPloFM2ZAdbUP8YED4eqrfV17+HCGAX9Joz3xemv1DY07B/zC2Cvv6O+V7kKabO77kc68/qisXZBoilSAZ+tFG+sFuxvnOHbD36lYuZgv/+oZ2FIPpaV+yt+ll8KoUdAluONG4/Xi2gvb8u3O/l7pLqQJct+Pjkok6ZRBtMGUZFKkAhyys1lPvBfmoI9rqVy5mIqVixm8aQPbior56+EnMn761X6F5F57ZaQ9sXpx8YStthqFzZU6K5GkWwaJwu9AoilyAZ4NbV+wfT/bxIRVz1C5cjHHbvg7zRh/O2Q4vz3pQh4dMpJeB/RlfGVmZxPE6sVt3b4j5urEfK2tZnIWTmclEpVBJKwU4DFM+fIAnr31vxn/2iJGvvMyXV0zK/Y/lFtGX868o07lg559gey+iNv34uLNL87HUMn0LJzOSiQqg0hYKcBbNTbCY49BVRXnVldzbkMDG0oP4Pdf+irVR3+FN/sevNvd+3Qv5sZzjw78RZxoT7OQQiXT27UmUiJRGUTCqLAD3Dl44QU/7W/WLPjwQ9h3X7jsMpg0iYNOOYV7b10c88XdvVvXjIR3Mj3NQgmVTM+lVolEoqowA/yNN3btrf3WW34lZEWFn/Y3bhx067bzrtlciKGDAWLL9FzqQvo0I/mlcAJ8wwa47z4/X/ull/w0vzFj4IYb/MEIvXrF/LZsLsTQqr3YstFDLpRPM5JfgpusHEaffAJ33w1jx8KAAfDDH/od/u68E9atg8cfh29+M254Q3b3es7FXtZREJV94EWyLf964Nu3w4IFvkTy0EP+4N9DD4XrrvMlki98Iakfl82P10H2NKO4+VVH1EMW2VN+BHhzMzz3nA/t+++Hjz+Gvn3hiit8aJ90Ulp7a2crPIJ6s4jq5lcikpxoB/iKFbsGI9991x8zVlHhl7OPHQvFxZ3/jJAJ4s1Cg6GpybdPLZL/ohfg69bBzJk+uF95xR+AMHYs/PSnUFkJ++yT6xamLKgASWYwVKHl6VOLRFE0AnzzZpgzx4f24sV+/vaJJ8Ivf+kP+D3ggFy3MG1BBkiiM2cUWrvoU4tEUTQC/MUX4Z//GQ4/HG680e/6d8QRuW5VoIIMkEQHQ5O9ZrZ764leL4h2aQqnRFE0AnzMGB/i5eV5cdBvLEEGSKKDocmWWrLZW0/0ekG1SwcvSBRFI8CLiuCEE3LdiowKOkCCPpYskd56kD30RD8dBPXJRcvpJYryeyFPhGRzwVAq1+yst97aE65tOay4tSdcvbw2pbYl+ukgqE8uWiwkURSNHngByMV+HMlcs7PeetCDgIl+Ogjyk4sWC0nUKMBDJBcBkug1OysxBD0ImGhJQ6UPKWQKcElIZ731TNTwO7pesvcTyUfm4py4ngnl5eWupqYma9eT7Il3QpDqyCLpM7Nlzrny9rerBy6BUE9YJPsU4CGRD0vaNQgokl0K8BDQknYRSYXmgYdAR1PwRETiUYCHgPbhEJFUpBXgZnaWma02szVmNiWoRhUaHaUmIqlIOcDNrAj4DbV5sSMAAAVdSURBVHA2cBRwiZkdFVTDCkkultG3Vb28lpHTFzF4ynxGTl+U8vJ3EcmudAYxTwTWOOfeAjCz+4AKYGUQDSsklSPKqHn3Y2YuWUuTcxSZ8dXjszOjo9AGUPNhto9Iq3RKKGXA2jZfr2u5bTdmNtnMasyspq6uLo3L5a/q5bXMXVZLU8uiqibnmLusNis94UIaQA16wy2RXEsnwGNtzL3Hsk7n3F3OuXLnXHm/fv3SuFz+ymWIFtIAaiG9WUlhSKeEsg4Y2ObrAcD69JpTmLIRovFKB4V0kEEhvVlJYUinB74UOMLMBptZN+BiYF4wzSosmZ6F0lHpINcDqNmk2T6Sb1IOcOfcDuB7wEJgFTDbObciqIYVkkyHaGd7dRfKQQaF9GYlhSGtpfTOuUeARwJqS8HK9EZQnZUOCmUPE224JflGe6GERCZDtJDq3J0plDcrKQxaSl8AVDoQyU/qgRcAlQ5E8pMCvECodCCSf1RCERGJKAW4iEhEqYQiBU2bW0mUKcClYBXaToySf1RCkYKlza0k6hTgUrC0uZVEnQJcCpY2t5KoU4BLwdIKVYk6DWJKwdIKVYk6BbgUNK1QlShTCUVEJKIU4CIiEaUAFxGJKAW4iEhEKcBFRCLKnHPZu5hZHfBuCt/aF/gw4Obkih5LOOmxhE++PA5I/7Ec4pzr1/7GrAZ4qsysxjlXnut2BEGPJZz0WMInXx4HZO6xqIQiIhJRCnARkYiKSoDflesGBEiPJZz0WMInXx4HZOixRKIGLiIie4pKD1xERNqJTICb2f81s1fN7GUze8zM+ue6Takys9vM7I2Wx/MXMyvNdZtSZWYXmtkKM2s2s8jNGDCzs8xstZmtMbMpuW5POszsj2a20cxez3Vb0mFmA83sSTNb1fLcujLXbUqVme1tZi+a2Sstj+XmQH9+VEooZtbLOfdJy39/HzjKOfedHDcrJWZ2JrDIObfDzH4G4Jy7NsfNSomZDQWagd8DVzvnanLcpISZWRHwd2AssA5YClzinFuZ04alyMxOBbYAf3bODct1e1JlZgcBBznnXjKznsAyoDKKfxczM6CHc26LmRUDzwJXOudeCOLnR6YH3hreLXoA0XjnicE595hzbkfLly8AA3LZnnQ451Y556J6iOSJwBrn3FvOue3AfUBFjtuUMufc08DHuW5HupxzG5xzL7X896fAKiCSe/46b0vLl8Ut/wSWXZEJcAAzu8XM1gKTgJ/kuj0BuRxYkOtGFKgyYG2br9cR0aDIV2Y2CBgBLMltS1JnZkVm9jKwEXjcORfYYwlVgJvZE2b2eox/KgCcc9c75wYCVcD3ctvajnX2WFrucz2wA/94QiuRxxJRFuO2yH6yyzdmtg8wF/hBu0/gkeKca3LOHYv/pH2imQVW3grViTzOuTMSvOu9wHzgxgw2Jy2dPRYzuwyYAJzuQj4QkcTfJWrWAQPbfD0AWJ+jtkgbLfXiuUCVc+6BXLcnCM65ejNbDJwFBDLQHKoeeEfM7Ig2X04E3shVW9JlZmcB1wITnXNbc92eArYUOMLMBptZN+BiYF6O21TwWgb+/gCscs7dmev2pMPM+rXOMjOzEuAMAsyuKM1CmQsMwc94eBf4jnOuNretSo2ZrQH2Aj5quemFCM+oOQ/4NdAPqAdeds6Ny22rEmdm44FfAEXAH51zt+S4SSkzs5nAaPzOdx8ANzrn/pDTRqXAzEYBzwCv4V/vANc55x7JXatSY2ZfBO7BP7+6ALOdc/8nsJ8flQAXEZHdRaaEIiIiu1OAi4hElAJcRCSiFOAiIhGlABcRiSgFuIhIRCnARUQiSgEuIhJR/wuRYuLlQrd3iAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_predict = lin_reg.predict(X)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y_predict[np.argsort(x)], color='r') #线性回归效果不好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0750025765636577"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error      #均方误差\n",
    "y_predict = lin_reg.predict(X)\n",
    "mean_squared_error(y, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用多项式回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "def PolynomialRegression(degree):                 #可以传入不同的degree值\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(memory=None,\n",
       "         steps=[('poly',\n",
       "                 PolynomialFeatures(degree=2, include_bias=True,\n",
       "                                    interaction_only=False, order='C')),\n",
       "                ('std_scaler',\n",
       "                 StandardScaler(copy=True, with_mean=True, with_std=True)),\n",
       "                ('lin_reg',\n",
       "                 LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "                                  normalize=False))],\n",
       "         verbose=False)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly2_reg = PolynomialRegression(degree=2)\n",
    "poly2_reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0987392142417856"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y2_predict = poly2_reg.predict(X)   #预测\n",
    "mean_squared_error(y, y2_predict)   #均方误差比之前线性回归方法的3.075小"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xabf4368b88>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y2_predict[np.argsort(x)], color='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.050846676376417"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly10_reg = PolynomialRegression(degree=10)\n",
    "poly10_reg.fit(X, y)\n",
    "y10_predict = poly10_reg.predict(X)\n",
    "mean_squared_error(y, y10_predict)            #效果比2还要好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xabf0757448>]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y10_predict[np.argsort(x)], color='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6880004678712686"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly100_reg = PolynomialRegression(degree=100)\n",
    "poly100_reg.fit(X, y)\n",
    "\n",
    "y100_predict = poly100_reg.predict(X)\n",
    "mean_squared_error(y, y100_predict)              #更小"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xabf0810648>]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y100_predict[np.argsort(x)], color='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly100_reg.predict(X_plot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[-3, 3, 0, 10]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3, 3, 0, 10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#degree 值越高，拟合情况越好（均值方差越小），但是拟合曲线完全不是想要的，过拟合了\n",
    "#而开始的时候直线的拟合，称之为 欠拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 分割数据集的意义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.2199965269396573"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.fit(X_train, y_train)\n",
    "y_predict = lin_reg.predict(X_test)            #测试泛化能力\n",
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.80356410562979"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly2_reg.fit(X_train, y_train)\n",
    "y2_predict = poly2_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y2_predict)        #多项式回归模型，泛化能力强于线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9212930722150768"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly10_reg.fit(X_train, y_train)\n",
    "y10_predict = poly10_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y10_predict)      #degree 10，泛化能力下降"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14075796434.50641"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly100_reg.fit(X_train, y_train)\n",
    "y100_predict = poly100_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y100_predict)    #degree 100，泛化能力更差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
